Skip to content

Add analyzer "Lookup Must Return Nullable Type"#9552

Merged
glen-84 merged 3 commits intomainfrom
gai/add-lookup-analyzer
Apr 15, 2026
Merged

Add analyzer "Lookup Must Return Nullable Type"#9552
glen-84 merged 3 commits intomainfrom
gai/add-lookup-analyzer

Conversation

@glen-84
Copy link
Copy Markdown
Member

@glen-84 glen-84 commented Apr 15, 2026

Summary of the changes (Less than 80 chars)

  • Add analyzer "Lookup Must Return Nullable Type".

#8072

Copilot AI review requested due to automatic review settings April 15, 2026 10:56
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Roslyn analyzer to enforce that members annotated with Hot Chocolate’s [Lookup] attribute return nullable types, aligning schema nullability with lookup semantics (lookups can legitimately not find a result).

Changes:

  • Introduce analyzer HC0113 (“Lookup Must Return Nullable Type”) for methods and properties annotated with [Lookup].
  • Add a code fix provider that offers to make the return type nullable.
  • Add analyzer tests and snapshot baselines; wire the analyzer into the test harness.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/HotChocolate/Core/src/Types.Analyzers/LookupReturnsNonNullableTypeAnalyzer.cs New analyzer that reports HC0113 when [Lookup] return types are non-nullable (incl. Task/ValueTask unwrapping).
src/HotChocolate/Core/src/Types.Analyzers/LookupReturnsNonNullableTypeCodeFixProvider.cs New code fix provider to make lookup return types nullable.
src/HotChocolate/Core/src/Types.Analyzers/Errors.cs Registers the new diagnostic descriptor HC0113.
src/HotChocolate/Core/test/Types.Analyzers.Tests/TestHelper.cs Adds the new analyzer to the test analyzer set.
src/HotChocolate/Core/test/Types.Analyzers.Tests/LookupReturnsNonNullableTypeAnalyzerTests.cs New test suite covering method/property + Task/ValueTask cases.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_NonNullableReturn_RaisesWarning.md Snapshot baseline for non-nullable method return warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_NullableReturn_NoWarning.md Snapshot baseline for nullable method return no-warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_TaskNonNullableReturn_RaisesWarning.md Snapshot baseline for Task<T> non-nullable result warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_TaskNullableReturn_NoWarning.md Snapshot baseline for Task<T?> no-warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_ValueTaskNonNullableReturn_RaisesWarning.md Snapshot baseline for ValueTask<T> non-nullable result warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Method_NoLookupAttribute_NoWarning.md Snapshot baseline ensuring no warning without [Lookup].
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Property_NonNullableReturn_RaisesWarning.md Snapshot baseline for non-nullable property warning.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/LookupReturnsNonNullableTypeAnalyzerTests.Property_NullableReturn_NoWarning.md Snapshot baseline for nullable property no-warning.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/HotChocolate/Core/src/Types.Analyzers/LookupReturnsNonNullableTypeAnalyzer.cs Outdated
@glen-84 glen-84 merged commit dccde34 into main Apr 15, 2026
134 checks passed
@glen-84 glen-84 deleted the gai/add-lookup-analyzer branch April 15, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants